home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Software Explosion
/
Software Explosion (Fore-Matt Home Computing)(1996).iso
/
games
/
windows
/
hangman
/
pictureb.cpp
< prev
next >
Wrap
C/C++ Source or Header
|
1996-01-15
|
3KB
|
98 lines
// PictureButton.cpp : implementation file
//
#include "stdafx.h"
#include "Hangman32.h"
#include "PictureButton.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CPictureButton
CPictureButton::CPictureButton()
{
}
CPictureButton::~CPictureButton()
{
}
// Autoload will load the bitmap resources based on the text of
// the button
// Using suffices "U", "D", "F" and "X" for up/down/focus/disabled
BOOL CPictureButton::AutoLoad(UINT nID, CWnd* pParent)
{
// first attach the CBitmapButton to the dialog control
if (!SubclassDlgItem(nID, pParent))
return FALSE;
CString buttonName;
GetWindowText(buttonName);
ASSERT(!buttonName.IsEmpty()); // must provide a title
LoadBitmaps(buttonName + _T("U"), buttonName + _T("D"),
buttonName + _T("F"), buttonName + _T("X"));
// we need at least the primary
if (m_bitmap.m_hObject == NULL)
return FALSE;
// size to content
// SizeToContent();
return TRUE;
}
// Draw the appropriate bitmap
void CPictureButton::DrawItem(LPDRAWITEMSTRUCT lpDIS)
{
ASSERT(lpDIS != NULL);
// must have at least the first bitmap loaded before calling DrawItem
ASSERT(m_bitmap.m_hObject != NULL); // required
// use the main bitmap for up, the selected bitmap for down
CBitmap* pBitmap = &m_bitmap;
UINT state = lpDIS->itemState;
if ((state & ODS_SELECTED) && m_bitmapSel.m_hObject != NULL)
pBitmap = &m_bitmapSel;
#ifndef _MAC
else if ((state & ODS_FOCUS) && m_bitmapFocus.m_hObject != NULL)
#else
else if ((state & ODS_FOCUS) && m_bitmapFocus.m_hObject != NULL &&
(GetParent()->GetStyle() & DS_WINDOWSUI))
#endif
pBitmap = &m_bitmapFocus; // third image for focused
else if ((state & ODS_DISABLED) && m_bitmapDisabled.m_hObject != NULL)
pBitmap = &m_bitmapDisabled; // last image for disabled
// draw the whole button
CDC* pDC = CDC::FromHandle(lpDIS->hDC);
CDC memDC;
memDC.CreateCompatibleDC(pDC);
CBitmap* pOld = memDC.SelectObject(pBitmap);
if (pOld == NULL)
return; // destructors will clean up
CRect rect;
rect.CopyRect(&lpDIS->rcItem);
BITMAP bits;
pBitmap->GetObject(sizeof(BITMAP), &bits);
pDC->StretchBlt(rect.left,rect.top,rect.Width(),rect.Height(),&memDC,0,0,
bits.bmWidth,bits.bmHeight,SRCCOPY);
memDC.SelectObject(pOld);
}
BEGIN_MESSAGE_MAP(CPictureButton, CButton)
//{{AFX_MSG_MAP(CPictureButton)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPictureButton message handlers